home *** CD-ROM | disk | FTP | other *** search
/ The Complete Utilities To…ka 501 Killer Utilities! / 501 Killer Utilities! (Macworld July 1995).cdr / Programming / OutOfPhase1.1 Source / OutOfPhase Folder / BuildInstrument.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-01-08  |  6.6 KB  |  199 lines  |  [TEXT/KAHL]

  1. /* BuildInstrument.h */
  2.  
  3. #ifndef Included_BuildInstrument_h
  4. #define Included_BuildInstrument_h
  5.  
  6. /* BuildInstrument module depends on */
  7. /* MiscInfo.h */
  8. /* Audit */
  9. /* Debug */
  10. /* Definitions */
  11. /* Memory */
  12. /* TrashTracker */
  13. /* CompilerScanner */
  14. /* InstrumentStructure */
  15. /* OscillatorSpecifier */
  16. /* OscillatorListSpecifier */
  17. /* LFOSpecifier */
  18. /* LFOListSpecifier */
  19. /* FixedPoint */
  20. /* DataMunging */
  21. /* Envelope */
  22. /* SampleSelector */
  23. /* ModulationSpecifier */
  24. /* EffectSpecList */
  25. /* DelayEffectSpec */
  26. /* WaveTableList */
  27. /* AlgoWaveTableList */
  28. /* NonlinearProcSpec */
  29. /* FilterSpec */
  30. /* AnalyzerSpec */
  31.  
  32. /* syntax errors */
  33. typedef enum
  34.     {
  35.         eBuildInstrNoError EXECUTE(= -17736),
  36.         eBuildInstrOutOfMemory,
  37.         eBuildInstrUnexpectedInput,
  38.         eBuildInstrExpectedInstrument,
  39.         eBuildInstrExpectedOpenParen,
  40.         eBuildInstrExpectedCloseParen,
  41.         eBuildInstrSomeRequiredInstrParamsMissing,
  42.         eBuildInstrExpectedSemicolon,
  43.         eBuildInstrExpectedInstrumentMember,
  44.         eBuildInstrMultipleInstrLoudness,
  45.         eBuildInstrSomeRequiredLFOParamsMissing,
  46.         eBuildInstrSomeRequiredOscillatorParamsMissing,
  47.         eBuildInstrExpectedNumber,
  48.         eBuildInstrExpectedStringOrIdentifier,
  49.         eBuildInstrExpectedLFOMember,
  50.         eBuildInstrMultipleLFOFreqEnvelope,
  51.         eBuildInstrSomeRequiredEnvelopeParamsMissing,
  52.         eBuildInstrMultipleLFOAmpEnvelope,
  53.         eBuildInstrMultipleLFOOscillatorType,
  54.         eBuildInstrExpectedLFOOscillatorType,
  55.         eBuildInstrMultipleLFOModulationType,
  56.         eBuildInstrMultipleLFOAddingMode,
  57.         eBuildInstrExpectedLFOModulationType,
  58.         eBuildInstrExpectedOscillatorMember,
  59.         eBuildInstrMultipleOscType,
  60.         eBuildInstrMultipleOscSampleList,
  61.         eBuildInstrMultipleOscLoudness,
  62.         eBuildInstrMultipleOscFreqMultiplier,
  63.         eBuildInstrMultipleOscFreqDivisor,
  64.         eBuildInstrMultipleOscLoudnessEnvelope,
  65.         eBuildInstrMultipleOscIndexEnvelope,
  66.         eBuildInstrExpectedOscType,
  67.         eBuildInstrExpectedInteger,
  68.         eBuildInstrExpectedEnvelopeMember,
  69.         eBuildInstrMultipleEnvTotalScaling,
  70.         eBuildInstrMultipleEnvPoints,
  71.         eBuildInstrExpectedDelayOrOrigin,
  72.         eBuildInstrExpectedLevelOrScale,
  73.         eBuildInstrExpectedEnvPointMember,
  74.         eBuildInstrExpectedIntBetween1And3,
  75.         eBuildInstrEnvSustainPointAlreadyDefined,
  76.         eBuildInstrMultipleEnvPointAmpAccent1,
  77.         eBuildInstrMultipleEnvPointAmpAccent2,
  78.         eBuildInstrMultipleEnvPointAmpAccent3,
  79.         eBuildInstrMultipleEnvPointAmpAccent4,
  80.         eBuildInstrMultipleEnvPointAmpFreq,
  81.         eBuildInstrMultipleEnvPointRateAccent1,
  82.         eBuildInstrMultipleEnvPointRateAccent2,
  83.         eBuildInstrMultipleEnvPointRateAccent3,
  84.         eBuildInstrMultipleEnvPointRateAccent4,
  85.         eBuildInstrMultipleEnvPointRateFreq,
  86.         eBuildInstrMultipleEnvPointCurveSpec,
  87.         eBuildInstrSomeSamplesDontExist,
  88.         eBuildInstrSomeWaveTablesDontExist,
  89.         eBuildInstrMultipleOscStereoBias,
  90.         eBuildInstrMultipleOscDisplacement,
  91.         eBuildInstrMultipleOscSurroundBias,
  92.         eBuildInstrMultipleOscFreqAdder,
  93.         eBuildInstrExpectedSquareOrTriangle,
  94.         eBuildInstrExpectedEffectName,
  95.         eBuildInstrExpectedDelayLineElem,
  96.         eBuildInstrExpectedTapChannel,
  97.         eBuildInstrExpectedTo,
  98.         eBuildInstrExpectedScale,
  99.         eBuildInstrExpectedTapAttr,
  100.         eBuildInstrMultipleSourceAccent1,
  101.         eBuildInstrMultipleSourceAccent2,
  102.         eBuildInstrMultipleSourceAccent3,
  103.         eBuildInstrMultipleSourceAccent4,
  104.         eBuildInstrMultipleTargetAccent1,
  105.         eBuildInstrMultipleTargetAccent2,
  106.         eBuildInstrMultipleTargetAccent3,
  107.         eBuildInstrMultipleTargetAccent4,
  108.         eBuildInstrMultipleScaleAccent1,
  109.         eBuildInstrMultipleScaleAccent2,
  110.         eBuildInstrMultipleScaleAccent3,
  111.         eBuildInstrMultipleScaleAccent4,
  112.         eBuildInstrMultipleFilter,
  113.         eBuildInstrMultipleMaxDelayTime,
  114.         eBuildInstrExpectedSlope,
  115.         eBuildInstrExpectedCenter,
  116.         eBuildInstrExpectedSamplelist,
  117.         eBuildInstrExpectedEnvelope,
  118.         eBuildInstrExpectedWavetable,
  119.         eBuildInstrUndefinedWavetable,
  120.         eBuildInstrExpectedInputscaling,
  121.         eBuildInstrExpectedOutputscaling,
  122.         eBuildInstrExpectedNLAttribute,
  123.         eBuildInstrMultipleInputaccent1,
  124.         eBuildInstrMultipleInputaccent2,
  125.         eBuildInstrMultipleInputaccent3,
  126.         eBuildInstrMultipleInputaccent4,
  127.         eBuildInstrMultipleOutputaccent1,
  128.         eBuildInstrMultipleOutputaccent2,
  129.         eBuildInstrMultipleOutputaccent3,
  130.         eBuildInstrMultipleOutputaccent4,
  131.         eBuildInstrMultipleIndexaccent1,
  132.         eBuildInstrMultipleIndexaccent2,
  133.         eBuildInstrMultipleIndexaccent3,
  134.         eBuildInstrMultipleIndexaccent4,
  135.         eBuildInstrExpectedWavetableindex,
  136.         eBuildInstrExpectedFilterType,
  137.         eBuildInstrExpectedFreq,
  138.         eBuildInstrExpectedBandwidth,
  139.         eBuildInstrExpectedDefaultScaling,
  140.         eBuildInstrExpectedResonScaling,
  141.         eBuildInstrExpectedZeroScaling,
  142.         eBuildInstrExpectedFilterAttr,
  143.         eBuildInstrMultipleFreqaccent1,
  144.         eBuildInstrMultipleFreqaccent2,
  145.         eBuildInstrMultipleFreqaccent3,
  146.         eBuildInstrMultipleFreqaccent4,
  147.         eBuildInstrMultipleBandwidthaccent1,
  148.         eBuildInstrMultipleBandwidthaccent2,
  149.         eBuildInstrMultipleBandwidthaccent3,
  150.         eBuildInstrMultipleBandwidthaccent4,
  151.         eBuildInstrMultipleOutputScaling,
  152.         eBuildInstrMultipleOutputScalingAccent1,
  153.         eBuildInstrMultipleOutputScalingAccent2,
  154.         eBuildInstrMultipleOutputScalingAccent3,
  155.         eBuildInstrMultipleOutputScalingAccent4,
  156.         eBuildInstrExpectedFilterChannel,
  157.         eBuildInstrNullFilterHasNoFreqAccent1,
  158.         eBuildInstrNullFilterHasNoFreqAccent2,
  159.         eBuildInstrNullFilterHasNoFreqAccent3,
  160.         eBuildInstrNullFilterHasNoFreqAccent4,
  161.         eBuildInstrFilterHasNoBandwidthAccent1,
  162.         eBuildInstrFilterHasNoBandwidthAccent2,
  163.         eBuildInstrFilterHasNoBandwidthAccent3,
  164.         eBuildInstrFilterHasNoBandwidthAccent4,
  165.         eBuildInstrExpectedScoreEffect,
  166.         eBuildInstrExpectedOscillatorEffect
  167.     } BuildInstrErrors;
  168.  
  169. /* forwards */
  170. struct InstrumentRec;
  171. struct SampleListRec;
  172. struct AlgoSampListRec;
  173. struct WaveTableListRec;
  174. struct AlgoWaveTableListRec;
  175. struct WaveTableObjectRec;
  176. struct AlgoWaveTableObjectRec;
  177. struct EffectSpecListRec;
  178.  
  179. /* take a block of text and parse it into an instrument definition.  it returns an */
  180. /* error code.  if an error occurs, then *InstrOut is invalid, otherwise it will */
  181. /* be valid.  the text file remains unaltered.  *ErrorLine is numbered from 1. */
  182. BuildInstrErrors                        BuildInstrumentFromText(char* TextFile, long* ErrorLine,
  183.                                                             struct InstrumentRec** InstrOut,
  184.                                                             struct SampleListRec* SampleList,
  185.                                                             struct AlgoSampListRec* AlgoSampList,
  186.                                                             struct WaveTableListRec* WaveTableList,
  187.                                                             struct AlgoWaveTableListRec* AlgoWaveTableList);
  188.  
  189. /* get a static null terminated string describing the error */
  190. char*                                                BuildInstrGetErrorMessageText(BuildInstrErrors ErrorCode);
  191.  
  192. /* build just a list of effects */
  193. BuildInstrErrors                        BuildEffectList(char* TextFile, long* ErrorLine,
  194.                                                             struct EffectSpecListRec** EffectOut,
  195.                                                             struct WaveTableListRec* WaveTableList,
  196.                                                             struct AlgoWaveTableListRec* AlgoWaveTableList);
  197.  
  198. #endif
  199.